package com.itheima.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.dto.PageCate;
import com.itheima.dto.YddCateDTO;
import com.itheima.entity.YddCate;
import com.itheima.mapper.YddCateMapper;
import com.itheima.result.PageData;
import com.itheima.service.YddCateService;
import com.itheima.vo.YddCateVO;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @projectName: kafka
 * @package: com.itheima.service.impl
 * @className: YddCateServiceImpl
 * @author: Eric
 * @description: TODO
 * @date: 2023/9/23 17:37
 * @version: 1.0
 */
@Service
@RequiredArgsConstructor
public class YddCateServiceImpl implements YddCateService {
    private final YddCateMapper yddCateMapper;

    @Override
    public PageData page(PageCate pageCate) {
        PageHelper.startPage(pageCate.getPage(),pageCate.getLimit());
        List<YddCate> yddCateList = yddCateMapper.selectByName(pageCate.getCatename());
        PageInfo<YddCate> pageInfo = new PageInfo<>(yddCateList);

        List<YddCateVO> yddCateVOList = new ArrayList<>();
        for (YddCate yddCate : yddCateList) {
            YddCateVO yddCateVO = new YddCateVO();
            BeanUtils.copyProperties(yddCate,yddCateVO);
            yddCateVO.setSort_num(yddCate.getSortNum());
            yddCateVO.setDefault_data(yddCate.getDefaultData());
            yddCateVOList.add(yddCateVO);
        }
        return new PageData(pageInfo.getTotal(),
                pageInfo.getPages(),
                pageInfo.getPageSize(),
                pageInfo.getPageNum(),
                yddCateVOList);
    }

    @Override
    public List<YddCateVO> queryAllCate() {
        List<YddCate> yddCateList = yddCateMapper.getAllCate();
        List<YddCateVO> yddCateVOList = new ArrayList<>();
        for (YddCate yddCate : yddCateList) {
            YddCateVO yddCateVO = new YddCateVO();
            BeanUtils.copyProperties(yddCate,yddCateVO);
            yddCateVO.setSort_num(yddCate.getSortNum());
            yddCateVO.setDefault_data(yddCate.getDefaultData());
            yddCateVOList.add(yddCateVO);
        }
        return yddCateVOList;
    }

    @Override
    public void creatYddCate(YddCateDTO yddCateDTO) {
        YddCate yddCate = new YddCate();
        BeanUtils.copyProperties(yddCateDTO,yddCate);
        yddCate.setSortNum(yddCateDTO.getSort_num());
        yddCateMapper.creatYddCate(yddCate);
    }

    @Override
    public void deleteYddCate(String id) {
        yddCateMapper.deleteYddCate(id);
    }

    @Override
    public YddCateVO queryYddCate(String id) {
        YddCate yddCate = yddCateMapper.queryYddCate(id);
        YddCateVO yddCateVO = new YddCateVO();
        BeanUtils.copyProperties(yddCate,yddCateVO);
        yddCateVO.setSort_num(yddCate.getSortNum());
        yddCateVO.setDefault_data(yddCate.getDefaultData());
        return yddCateVO;
    }

    @Override
    public void updateYddCate(YddCateDTO yddCateDTO) {
        YddCate yddCate = new YddCate();
        BeanUtils.copyProperties(yddCateDTO,yddCate);
        yddCate.setSortNum(yddCateDTO.getSort_num());
        yddCateMapper.updateYddCate(yddCate);
    }
}
